fix: pass bearer token when downloading profile pictures #1136
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What kind of change does this PR introduce?
Bug fix
Why was this change needed?
LinkedIn integration fails during OAuth callback because Postiz cannot download the user's profile picture from LinkedIn's CDN. The CDN returns HTTP 403 (Forbidden), causing the entire integration to fail.
Root cause:
LocalStorage.uploadSimple()performs a bareaxios.get(url)with no headers. LinkedIn's CDN blocks this request because:axios/x.x.x)Related issue: Fixes #972
Solution
Two-part fix:
uploadSimple()and pass the Authorization header when downloading profile picturesChanges
upload.interface.ts: AddedUploadSimpleOptionsinterface with optional headerslocal.storage.ts: Added browser-like User-Agent and accepts optional headerscloudflare.storage.ts: Same changes for Cloudflare storage providerintegration.service.ts: Pass Bearer token, wrap in try-catch for graceful fallbackTesting
Tested in combination with #1134 using a
deploymentbranch on my fork. Successfully added LinkedIn Channel to self-hosted Postiz instance.Checklist: